package com.qf.day11;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;
import java.util.function.Predicate;

/**
 * 演示Collectin接口中的方法的作用
 */
public class CollectionDemo {
    public static void main(String[] args) {

        // 多态，父类型的变量指向值类型的对象
        Collection<Integer> c1 = new ArrayList<>();
        c1.add(10);
        c1.add(11);
        c1.add(5);
        c1.add(5);
        System.out.println(c1);

        // 使用 iterator方法遍历集合
        Iterator<Integer> iterator = c1.iterator();

        // 如果迭代器中还有可以访问的元素，那么iterator.hasNext()
        // 返回true
        while (iterator.hasNext()) {
            Integer next = iterator.next();
            System.out.println(next);
        }

//        boolean b = iterator.hasNext();
//        System.out.println(b);
//        Integer next = iterator.next();
//        System.out.println(next);


        // 如何遍历一个集合中的所有元素
        // 可以使用增强for循环遍历集合
//        for (Integer a : c1) {
//            System.out.println(a);
//        }

//        c1.forEach( a-> System.out.println(a));

//        c1.forEach(new Consumer<Integer>() {
//            @Override
//            public void accept(Integer integer) {
//                System.out.println(integer);
//            }
//        });



//        Integer[] arr = new Integer[c1.size()];
//        Integer[] array = c1.toArray(arr);
//        for (int i = 0; i < array.length; i++) {
//            Integer integer = array[i];
//            System.out.println(integer);
//        }
//        System.out.println(Arrays.toString(array));

//        Object[] array = c1.toArray();
//        for (int i = 0; i < array.length; i++) {
////            System.out.println(array[i]);
//            Integer a = (Integer) array[i];
//            System.out.println(a);
//        }

//        System.out.println(c1.size());

//        Collection<Integer> c2 = new ArrayList<>();
//        c2.add(10);
//        c2.add(11);

        // 求c1和c2的交集
//        System.out.println(c1.retainAll(c2));
//        System.out.println(c1);




        // 把大于6的元素都删掉
//        System.out.println(c1.removeIf(e -> e > 6));
//        System.out.println(c1.removeIf(new Predicate<Integer>() {
//            @Override
//            public boolean test(Integer integer) {
//                return integer>6;
//            }
//        }));
//        System.out.println(c1);

//        System.out.println(c1.contains(12));
//        System.out.println(c1.hashCode());
//        c1.clear();
//        System.out.println(c1.isEmpty());
//        System.out.println(c1.remove(12));
//        System.out.println(c1);

//        Collection<Integer> c2 = new ArrayList<>();
//        c2.add(10);
//        c2.add(11);
//
//        System.out.println(c1.removeAll(c2));
//        System.out.println(c1);


//        c2.add(5);
//        c2.add(5);
//        c2.add(10);
//        c2.add(6);

//        System.out.println(c1.equals(c2));

//        System.out.println(c1.containsAll(c2));
//
//        boolean b = c1.addAll(c2);
//        System.out.println(b);
//        System.out.println(c1);

//        c1.clear();
//        System.out.println(c1);



    }
}
